extends 数据基类
class_name 区域数据类

const 属性列表:Dictionary={
	id="",
	区域名="",	
	脚本类型="",
	环境效果="",	
	探索进度效果="",
	环境卡牌数据列表="",
	地面卡牌数据列表="",
}
@export var id:String
@export var 区域名:String
@export var 背景音乐:AudioStream
@export var 区域图:Texture
@export var 环境效果:Dictionary
@export var 脚本类型:String
@export var 探索进度:int=0:
	set(value):
		if value>100:
			value=100
		探索进度=value
		探索进度变化.emit()
		
@export var 探索进度效果:Dictionary

@export var 环境卡牌区:卡牌区数据类=卡牌区数据类.new()
@export var 地面卡牌区:卡牌区数据类=卡牌区数据类.new()

@export var 动作列表:Array=[]
@export var 探索物信息列表:Dictionary={}
	
signal 探索进度变化

func 初始化(数据:Dictionary):
	for 属性 in 属性列表:		
		set(属性,数据[属性])	
	探索物信息列表=GameData.初始数据.探索物[id]
	区域图=GameResource.获取图片(数据.区域图)
	背景音乐=GameResource.获取音频(数据.背景音乐)
#	初始化动作列表(数据)
	初始化环境卡牌(数据.环境卡牌数据列表)
	初始化地面卡牌(数据.地面卡牌数据列表)
	
#func 初始化动作列表(数据:Dictionary):
	#var 动作id列表:Array=数据.动作列表.split(",",false)	
	#for 动作id in 动作id列表:
		#var 动作数据:动作数据类=GameFactory.生成动作("动作",动作id)
		#if 动作数据!=null:
			#动作列表.append(动作数据)

func 初始化环境卡牌(卡牌数据列表:Dictionary):
	for 卡牌id in 卡牌数据列表:
		var 卡牌数量:int=卡牌数据列表[卡牌id]
		for i in range(卡牌数量):
			var 卡牌数据:卡牌数据类=GameFactory.生成数据模型("卡牌",卡牌id)
			添加卡牌(卡牌数据)

func 初始化地面卡牌(卡牌数据列表:Dictionary):
	for 卡牌id in 卡牌数据列表:
		var 卡牌数量:int=卡牌数据列表[卡牌id]
		for i in range(卡牌数量):
			var 卡牌数据:卡牌数据类=GameFactory.生成数据模型("卡牌",卡牌id)
			添加卡牌(卡牌数据)

func 添加卡牌堆(卡牌堆数据:卡牌堆数据类):
	if 卡牌堆数据!=null:
		for 卡牌数据 in 卡牌堆数据.数据:
			添加卡牌(卡牌数据)
				
func 添加卡牌(卡牌数据:卡牌数据类):
	if 卡牌数据!=null:
		if 卡牌数据.主类型=="区域物品":
			环境卡牌区.添加卡牌(卡牌数据)
		elif 卡牌数据.主类型=="普通物品":
			地面卡牌区.添加卡牌(卡牌数据)
